home *** CD-ROM | disk | FTP | other *** search
/ Nejlepší hry / Nejlepsi hry.iso / hry / plane arcade / planearcade.exe / tank3.bmp / zaloha / model-origina.h < prev    next >
C/C++ Source or Header  |  2004-06-12  |  5KB  |  207 lines

  1.  
  2. #ifndef _MODEL_H_
  3. #define _MODEL_H_
  4.  
  5.  
  6. //struktury modelov
  7. #include "md2.h"
  8. #include "shd.h"
  9.  
  10.  
  11. //-----------------------------------
  12. //FACE 
  13. //----------------------------------
  14. struct MODELFACE
  15. {
  16.     VECTOR3D P[3];  //vertexi
  17.     VECTOR2D T[3];  //texture kordinaty
  18.     VECTOR3D N[3];  //normaly
  19.  
  20.     PLANE Plane;   //rovina
  21.  
  22. };
  23.  
  24. //----------------------------------
  25. //MODEL
  26. //----------------------------------
  27. struct MODELFRAME
  28. {
  29.     //Face
  30.     int NumFaces;
  31.     int ActFace;
  32.     MODELFACE *FaceList;
  33.     
  34.     VECTOR3D Min,Max; //minimalne - maximalne hodnoty
  35.     VECTOR3D P[8];    //body obaloveho kvadra
  36.     VECTOR3D Centre;  //stred
  37.     VECTOR3D ZeroPoint; //transformovany bod 0,0,0
  38.     float    Polomer; //polomer 
  39. };
  40.  
  41. //-----------------------------------
  42. //CUSTOMVERTEX
  43. //---------------------------------------
  44. struct CUSTOMVERTEXMODEL
  45. {
  46.     D3DXVECTOR3 pos; //Position
  47.     D3DXVECTOR3 normal; //normal
  48.     D3DCOLOR    color;  
  49.     FLOAT       tu, tv;  
  50.     FLOAT       tu2, tv2;   //bump mapping
  51.     
  52. };
  53.  
  54. //CUSTOMVERTEXT
  55. #define D3DFVF_CUSTOMVERTEXMODEL (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX2)
  56.  
  57. //------------------------------------------------------------------
  58. // Name: MODEL class
  59. // Desc: ***********
  60. //------------------------------------------------------------------
  61. class MODEL
  62. {
  63. private:
  64.     
  65.     //vertex buffer
  66.     LPDIRECT3DVERTEXBUFFER9 g_pVB ; 
  67.  
  68.     //textura
  69.     LPDIRECT3DTEXTURE9    g_pTexture; 
  70.     LPDIRECT3DTEXTURE9    g_pEnviroMap; 
  71.  
  72.     //material
  73.     D3DMATERIAL9 Material;
  74.  
  75.     
  76.     ///////////
  77.     //FUNKCIE// 
  78.     ///////////
  79.  
  80.     //zinicializuje vsetko - VB, modely
  81.     void SetNums(int NFrames, int NFaces);
  82.  
  83.     
  84.     ///////////////////////////////////////
  85.     //POMOCNE FUNCKIE PRE PRACU S MODELOM//
  86.     ///////////////////////////////////////
  87.  
  88.     void CalcBoxPoints(MODELFRAME *Mod);
  89.  
  90.     //vypocita minimum a maximum a stred
  91.     void CalcMinMax(MODELFRAME *Mod,D3DXMATRIXA16 Matica);
  92.  
  93.     //vypocita Face Normaly, vypocita stred, zeropoint, MinMax
  94.     void CalcFaceNormals(MODELFRAME *Mod);
  95.  
  96.     //vypocitaj smooth shading
  97.     void CalcSmoothShading(MODELFRAME *Mod);
  98.  
  99.     //interpolacia
  100.     void InterpolateModel(MODELFRAME *Mod);
  101.  
  102.     //transformacia - vypocita min max
  103.     void TransformModel(MODELFRAME *Mod,D3DXMATRIXA16 Matica);
  104.  
  105.     //renderuje model
  106.     void RenderModelNormal(MODELFRAME Mod);
  107.     void RenderModelMultiTexture(MODELFRAME Mod);
  108.     void RenderModelEnvironment(MODELFRAME Mod);
  109.     void RenderModelBumpMap(MODELFRAME Mod);
  110.     void RenderModelOnlyShadow(MODELFRAME Mod);
  111.  
  112.     //inicializacia
  113.     void InitializeModel(MODELFRAME *Mod,int NFaces);
  114.  
  115.     //znicenie
  116.     void DestroyModel(MODELFRAME *Mod);
  117.  
  118.  
  119.     //////////////////////
  120.     //FUNKCIE - LOAD ASE//
  121.     //////////////////////
  122.     int GetNumFace(char *FileName);
  123.     void AddNode(MODELFRAME *Mod,FILE *fp);
  124.      
  125.  
  126. public:
  127.  
  128.     MODEL();
  129.     ~MODEL();
  130.  
  131.     
  132.     MODELFRAME *ModelFrame; //zasobnik nacitanych modelov
  133.     MODELFRAME ModelT;      //transformovany model - pripraveny na render
  134.  
  135.     //////////////
  136.     //VLASTNOSTI//
  137.     //////////////
  138.  
  139.     D3DXMATRIXA16 Matica; //matica
  140.     
  141.     VECTOR3D Pos;        //pozicia
  142.      VECTOR3D Rot;        //rotacia - yaw pitch roll
  143.     VECTOR3D Sca;        //velkos¥
  144.     COLOR Color;         //color
  145.  
  146.     bool Lighting;       //osvetlit model?
  147.     bool Specular ;      //zapinat specular shading
  148.     bool Textured;       //textura?
  149.     bool FrustrumTest;  //test frustrum cullingu
  150.     bool SmoothShading;  //ci ma pocitat smooth shading
  151.     bool Normals;        //ci ma pocitat normaly
  152.     bool BumpMap;        //bumpmapping
  153.     bool EnviromentMapping; //enviro mapping
  154.     bool MultiTexture; //enviro + normal 
  155.     bool OnlyShadow;  //render iba pre tiene
  156.  
  157.     float Frame;         //frame - animacia
  158.     
  159.     int NumFaces;   //pocet trojholnikov v jednom modely
  160.     int NumFrames;  //pocet frejmov
  161.  
  162.     //////////////////////
  163.     //FUNKCIE - LOAD ASE//
  164.     //////////////////////
  165.  
  166.     void InitializeAse(int NFrames,char *FileName);
  167.     void LoadAse(int IntoFrame,char *FileName);
  168.  
  169.     //////////////////////
  170.     //FUNKCIE - MD2     //
  171.     //////////////////////
  172.     void LoadMD2(char *FileName,int NFrames);
  173.  
  174.     //////////////////////
  175.     //FUNKCIE - SHD     //
  176.     //////////////////////
  177.     void LoadSHD(char *FileName);
  178.     void SaveSHD(char *FileName);
  179.  
  180.     ///////////////////////
  181.     //FUNKCIE - UNIVERZAL//
  182.     ///////////////////////
  183.     void LoadTexture(char *FileName,COLOR ColorKey);
  184.     void LoadEnviroMap(char *FileName);
  185.  
  186.     void SetMaterial(D3DMATERIAL9 Mat);
  187.  
  188.     void BuildShadow(STENCIL *Stn);
  189.  
  190.     void Render();
  191.     void RenderFast();
  192.  
  193.     //////////////////////
  194.     //FUNKCIE - KOLIZIA/ /
  195.     //////////////////////
  196.     
  197.     //vlastnosti kolizie
  198.     VECTOR3D ColPosition; //pozicia v ktorej doslo ku kolizii
  199.     VECTOR3D ColNormal; //normala facu ktory bol v kolizii
  200.  
  201.     bool CollisionDetail(VECTOR3D P1, VECTOR3D P2,D3DXMATRIX PomMatrix);
  202.     bool CollisionBox(VECTOR3D P1, VECTOR3D P2,D3DXMATRIX PomMatrix);
  203.     
  204.  
  205. };
  206.  
  207. #endif //_MODEL_H_